home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Environments / PowerLisp 2.01 / PowerLisp_2_0_readme.txt
Text File  |  1996-07-01  |  17KB  |  442 lines

  1. PowerLisp 2.0
  2. 5/26/96
  3.  
  4. New Features in PowerLisp 2.0
  5.  
  6. CLOS Support
  7. The biggest new feature in PowerLisp 2.0 is the addition of 
  8. CLOS support. See the section on CLOS for details.
  9.  
  10. Preferences
  11. A Preferences dialog has been added. It lets you control how 
  12. much time is given to background processes while Lisp 
  13. programs are running. It also lets you choose between having 
  14. output all go to the Worksheet vs. output will go to the window 
  15. that last executed a Lisp command.
  16.  
  17. Registration Screen (Sorry, but a necessary addition).
  18. A registration screen has been added at startup. If you have 
  19. registered, you can disable it by entering your name and product 
  20. registration code in the Registration dialog. Contact Roger 
  21. Corman to receive your code if you have already registered.
  22.  
  23. Better Structure and Array Handling
  24. In PowerLisp 2.0, structures, arrays and strings are all stored 
  25. more efficiently. Arrays and strings are more consistent and 
  26. more closely adhere to the Common Lisp standard. 
  27.  
  28. Top level variables
  29. The Common Lisp variables +,  ++, *, **, etc. are now properly 
  30. bound during top loop execution as specified in the Common 
  31. Lisp standard.
  32.  
  33. Misc. Additional Language Features
  34. A number of other Common Lisp functions which were missing 
  35. are now implemented (I am sorry to not be more specific here). 
  36. Overall, PowerLisp 2.0 is much closer to the CLTL2 specification 
  37. than any previous version of PowerLisp.
  38.  
  39. More Stable on Power Macs.
  40. A serious bug which prevented PPC compiled code from 
  41. working on certain Power Macs (related to the memory setup) 
  42. has now been fixed. This generally caused a crash during startup 
  43. on affected machines. The fix was released last summer as 
  44. PowerLisp 1.2.1d. These changes are now included in PowerLisp 
  45. 2.0.
  46.  
  47.  
  48. PowerLisp 1.2
  49. 4/1/95
  50. ---------------
  51. This is the public release of PowerLisp 1.2. It contains a significant
  52. number of new features, bug fixes, and enhancements over version 1.1.
  53. I will go over a number of these here, but probably won't cover all
  54. of them.
  55.  
  56. I greatly appreciate the support of those of you who have chosen
  57. to register PowerLisp, and who have communicated with me regarding
  58. bugs, requested enhancements, etc. Many of the added features are
  59. in direct response to those communications.
  60.  
  61. PowerMac Native
  62. The single biggest change is that PowerLisp is now a fat binary,
  63. and runs native on a PowerMac as well as a 68k Mac. The speed of
  64. the interpreter on a PowerMac is up to 10 times as fast as when running
  65. emulated.
  66.  
  67. In addition, a full suite of tools, including PowerPC native code 
  68. compiler, assembler and disassembler are included with PowerLisp.
  69. PowerLisp is released with both 68k and PPC binaries of the library
  70. files.
  71.  
  72. Documentation
  73. Thanks to Digital Press and Guy L. Steele Jr., Common Lisp the Language,
  74. 2nd edition is available for electronic distribution. I have packaged
  75. it in a form that can be browsed in PowerLisp, and will be including
  76. it with the PowerLisp package for distribution.
  77.  
  78. Note that Digital Press owns the copyright to this work. Please read
  79. the readme.txt file in the Documentation folder for information about
  80. Digital Press and this reference book.
  81.  
  82. Additionally, I have put an ascii version of the PowerLisp documentation
  83. in browsable format from within PowerLisp. A hierarchical Documentation
  84. menu makes it very convenient to get documentation on any Common Lisp 
  85. function.
  86.  
  87. Also, the Common Lisp documentation function can be used to pull
  88. up the documentation from CLTL2 as well.
  89.  
  90. To Install the Common Lisp the Language documentation files so that
  91. they can be used from PowerLisp:
  92.  
  93. Unstuff the PowerLisp-CLTL2.sit archive. The expanded folder, Documentation,
  94. should be placed into the PowerLisp 1.2 folder. It will replace the current
  95. Documentation folder.
  96.  
  97. To test whether the installation was successful:
  98. Start up PowerLisp 1.2. It will take longer to start up, because
  99. the menu structure is being built and the documentation index is being
  100. read. When it finishes, pull down the Documentation menu. It should
  101. be extended with Common Lisp the Language chapter names. If not, then
  102. the documentation is not correctly installed.
  103.  
  104. If at some point you decide you don't want the expanded documentation,
  105. you can disable the load at startup simply by renaming the file
  106. in the Documentation folder called cltl2-index.lisp to some other name.
  107. If this file is not found at startup, the extra documentation is not
  108. loaded.
  109.  
  110. Editor
  111. The editor now places temporary files in the Macintosh temporary
  112. items folder, which is where they belong. This should avoid 
  113. leaving files around when errors occur or when the program
  114. terminates abnormally.
  115.  
  116. The PowerLisp Worksheet defaults to Lisp Mode.
  117.  
  118. PostScript and C++ Mode have been removed, as they were not really
  119. useful.
  120.  
  121. Editor Known Bugs
  122. Line Wrap mode and Lisp mode are not totally compatible. I avoid
  123. using them at the same time. I haven't gotten around to fixing this
  124. yet. 
  125.  
  126. When in Lisp Mode, dragging and scrolling a selection sometimes
  127. leaves garbage highighting on the screen. This is cosmetic only.
  128.  
  129. Common Lisp Implementation
  130. A number of new functions have been added. Also, printing
  131. functions are more correctly implemented.
  132.  
  133. Complex numbers are working better than in 1.1. A number of
  134. library functions will still not handle complex numbers, and will
  135. give an error message when passed one.
  136.  
  137. Floating point comparisons are fixed now.
  138.  
  139. The main item which is still lacking, relative to CLTL2, is
  140. CLOS. Here and there you may still stumble on some missing functions, 
  141. but hopefully this won't come up often.
  142.  
  143. Integers are now passed as tagged direct values (if they fit in 31 bits).
  144. This improves speed of integer manipulation quite a bit. I will 
  145. probably continue to migrate other types to the tagging scheme.
  146. This reduces memory usage and garbage collection.
  147.  
  148. Compiler
  149. 68k compiled libraries use the extension .fasl, and PowerPC compiled
  150. libraries use the extension .ppcl. They both have the same file
  151. type currently. If you try to load and execute the wrong file, it will
  152. not be detected and your system will crash! Sorry about this, but I didn't
  153. have time to deal with this. For now, your best bet may be to remove
  154. all libraries which are the wrong type from your library folder i.e.
  155. if you have a PowerMac remove all the .fasl, and if not remove all the
  156. .ppcl.
  157.  
  158. I recommend that you recompile any of your own libraries with
  159. version 1.2.
  160.  
  161.  
  162.  
  163.  
  164. PowerLisp 1.1
  165. 4/4/94
  166. ---------------
  167. This is the public release of PowerLisp 1.1. It contains a significant
  168. number of new features, bug fixes, and enhancements over version 1.01.
  169. I will go over a number of these here, but probably won't cover all
  170. of them.
  171.  
  172. I greatly appreciate the support of those of you who have chosen
  173. to register PowerLisp, and who have communicated with me regarding
  174. bugs, requested enhancements, etc. Many of the added features are
  175. in direct response to those communications.
  176.  
  177. Thanks to Ken Long for his improved color icons, which I have
  178. included in this released version.
  179.  
  180. Editor
  181. The editor, PowerEdit, has been enhanced in a number of ways,
  182. and a number of bugs have been fixed. 
  183.  
  184. The editor now uses its own heap, which is limited in size to
  185. 200k. A source file of about 80k is likely to fill it up. When
  186. the editor limit is reached, text is written to disk in a temporary
  187. file. As a result, you may edit many, large files without any
  188. effect on the space you have for your Lisp programs. I find the
  189. occasional slowdown from disk activity is preferable to the way
  190. the editor ate up memory in 1.01. Currently a temporary file for
  191. each open file is created, when the editor needs memory. These
  192. files should be deleted when the program exits.
  193.  
  194. The editor has been cleaned up internally, which seems to have
  195. eliminated some spurious crashes and data loss. I still am not
  196. 100% confident in it, so keep good backups of your source files.
  197.  
  198. Line Wrap mode works pretty well now. You can easily turn it on,
  199. but you can't make it the default yet. For large files it can
  200. get pretty sluggish. I usually turn it on when I need to view a long
  201. line, and leave it off the rest of the time.
  202.  
  203. Lisp mode has been improved. As several of you noted, it seems logical
  204. that when a Lisp expression is outlined, pressing Enter should
  205. execute the entire expression, rather than just the current line.
  206. I have implemented this. To make it obvious, the whole expression
  207. gets highlighted for a fraction of a second before executing it.
  208.  
  209. You may now create bold and italic text in the editor. The commands
  210. are located in the bottom of the Edit menu. Lisp mode no longer
  211. automatically italicizes comments. Bold and italicized text gets
  212. saved and re-loaded correctly.
  213.  
  214. Another problem several people had was getting buried in open
  215. parentheses. When you are entering expressions, and have not closed
  216. enough levels of parentheses, the system seems frozen. To make it
  217. clearer, the editor now shows the number of open parentheses
  218. in the message bar. I think this helps.
  219.  
  220. Editor Known Bugs
  221. Line Wrap mode and Lisp mode are not totally compatible. I avoid
  222. using them at the same time.
  223.  
  224. PowerLisp Environment
  225. A major addition is the Memory window, which can be displayed via
  226. the Memory command in the new Misc menu. It brings up a window
  227. which gives you animated displays of the PowerLisp heaps, stacks
  228. and editor heap usage. It is useful for monitoring memory usage while
  229. you are running, and noticing how much time is spent in garbage
  230. collection. When you see the Nodes and Heap bars shrinking you
  231. know garbage is being recycled.
  232.  
  233. Common Lisp Implementation
  234. PowerLisp 1.1 is much closer to CLTL2 compatibility than was
  235. 1.01. A larg number of functions and macros have been added, and
  236. several which were incorrectly implemented have been fixed. Several
  237. more libraries have been added, as many of the new, corrected
  238. implementations are in Common Lisp and replace built-in C++
  239. functions.
  240.  
  241. Complex numbers and arbitrarily large integers are now supported
  242. in PowerLisp.
  243.  
  244. The main item which is still lacking, relative to CLTL2, is
  245. CLOS. Here and there you may still stumble on some missing functions, 
  246. but hopefully this won't come up often.
  247.  
  248. Scope and Extent
  249. The important fix here is support for special declarations
  250. has been added to both the interpreter and compiler. Local variables
  251. which are declared special should now be handled correctly. In
  252. 1.01, only variables declared via defvar or defparameter were 
  253. considered special (plus some built-in variables like *package*).
  254.  
  255. Type Specifiers
  256. This area has been improved a lot, with most type expressions
  257. supported in most places. I hope to be able to remove the qualifiers
  258. so let me know if you notice any problems.
  259.  
  260. Program Structure
  261. In 1.01 the defun and defmacro macros did not behave correctly
  262. in non top-level contexts. This has been corrected.
  263.  
  264. Predicates
  265. Most of the missing predicates have been added.
  266.  
  267. Control Structure
  268. It was pointed out to me that the do macro in 1.01 was incorrect.
  269. In particular, it did not update the set of local variables
  270. 'in parallel' as it was supposed to do. This has been fixed in 1.1.
  271. Also, implementations of psetq and all of the multiple value handling
  272. macros are included.
  273.  
  274. A number of mapping functions which were missing in 1.01 have 
  275. been added.
  276.  
  277. Compiler
  278. The compiler now correctly compiles flet special forms, structures,
  279. and special declarations. labels forms compile, but the generated
  280. code is the same as for flet.
  281. labels works correctly when interpreted. Some bugs in the interpreter
  282. relating to these forms and function closures were identified and
  283. fixed.
  284.  
  285. The compiler now behaves in accordance with CLTL2 concerning 
  286. evaluation of compiled forms. Forms are not evaluated in general,
  287. although eval-when can be used to force evaluation at compile time.
  288.  
  289. Compiled libraries now use the extension (by default) .fasl which
  290. is commonly used by other Lisp systems. Of course these files are not
  291. compatible with other Lisp systems. Compiled libraries are significantly
  292. smaller than 1.01 libraries. This is accomplished mostly by eliminating
  293. redundancy in the symbol tables. This makes loading faster.
  294. Libraries are about 30% smaller, and should still be compatible
  295. with 1.01 libraries. That is, 1.01 libraries should still load into
  296. 1.1, but 1.1 libraries will not be usable by 1.01.
  297.  
  298. I recommend that you recompile any of your own libraries with
  299. version 1.1. This will allow you to benefit from the smaller
  300. libraries, faster load time and corrected compiler behavior.
  301.  
  302. The 'missing function' warning messages which so often were emitted
  303. by the compiler are now eliminated. My hope is to add a better,
  304. more useful warning facility to replace this. In the mean time
  305. it was more of a source of confusion and annoyance than a help.
  306. At any rate, if a function is missing at run time, you will get
  307. an error message (the system won't crash).
  308.  
  309. Declarations
  310. As mentioned before, special declarations are now handled 
  311. correctly by the compiler and interpreter. Most other declarations
  312. are currently ignored by both the compiler and interpreter.
  313.  
  314. The locally special form is not yet supported.
  315.  
  316. Packages
  317. Some support was added here for shadowing symbols. The defpackage
  318. macro was added. The handling of shadowing symbols still may not
  319. be exactly correct.
  320.  
  321. Numbers
  322. Many number functions have been added, including sin, cos, tan, asin,
  323. acos, atan, sinh, cosh, tanh, exp, expt, log, float, isqrt. Large
  324. integers and complex numbers are now supported.
  325.  
  326. A few functions are still missing, but all the missing ones will
  327. explicitly generate "not implemented" messages rather than the
  328. normal "no function definition".
  329.  
  330. Integers between 0 and 500 now are cached i.e. new ones never 
  331. need to be created. (eq 100 100) is true, but (eq 501 501) is nil.
  332.  
  333. Interpreter
  334. The interpreter has been sped up by reducing the number of external
  335. memory accesses during the interpretation process.
  336.  
  337. Characters
  338. All characters are kept in a table, so never need to be created
  339. (as are integers between 0 and 500). This makes some character
  340. handling more efficient. Some character-related functions were 
  341. added.
  342.  
  343. Sequences
  344. A number of missing sequence functions are now implemented.
  345.  
  346. Strings
  347. A number of string functions which were missing in 1.01
  348. are now implemented.
  349.  
  350. Structures
  351. The defstruct macro has been rewritten in Common Lisp, and is
  352. included in the library 'structures.lisp'. The structure
  353. printing facility should now work correctly. Code which uses
  354. structures now compiles correctly.
  355.  
  356. Streams
  357. The functions with-output-to-string, read-from-string are
  358. now implemented. The standard stream *terminal-io* has been
  359. added.
  360.  
  361. Input/Output
  362. Much work has been done with the output functions. Many have
  363. been reimplemented. All the parameters to write are now supported.
  364. Circular lists can be read and written, print-level can be set,
  365. etc.
  366.  
  367. Pretty printing is still not supported.
  368.  
  369. The format function works better and more options are supported.
  370. I won't enumerate them here, but if you are really curious you
  371. could read the source code, which is included in format.lisp in
  372. the library folder.
  373.  
  374. Some output functions, in particular print, worked incorrectly
  375. in 1.01. These have been fixed, but the fix may cause your code
  376. to output differently. Sorry. :-)
  377.  
  378. Errors
  379. The warn function has been implemented.
  380.  
  381. Backquotes
  382. Guy Steele's backquote handling code, with optimizations (from CLTL2)
  383. is now used to handle backquote forms. This correctly handles 
  384. nested backquote forms, and generates optimally efficient forms.
  385.  
  386. Documentation
  387. Updated this README file.
  388. I have included a Common Ground version of the documentation
  389. which has a built-in viewer. You can use this version to
  390. browse and print the documentation if you don't have a copy
  391. of Microsoft Word.
  392.  
  393. The PowerLisp user guide has been updated to include the 1.1
  394. modifications.
  395.  
  396. Non-standard Extensions
  397. A graphics library has been added. To use it, execute the expression:
  398.  
  399. (require :graphics)
  400.  
  401. This will cause the library to be loaded and you may use it to
  402. create graphic images.
  403.  
  404. The following functions get loaded into the COMMON-LISP package:
  405.  
  406.         open-canvas 
  407.         use-canvas 
  408.         moveto 
  409.         lineto
  410.         setcolor
  411.         pensize
  412.         fillrect
  413.         fillpoly
  414.         clear-canvas
  415.  
  416. These functions contain (brief) usage documentation.
  417.  
  418.  
  419. PowerLisp 1.01
  420.  
  421. Updates since version 1.0:
  422.  
  423. Fixed problem which would cause PowerLisp to crash when
  424. exiting the program in certain cases.
  425.  
  426. Files selected from the Finder come up on top of the Worksheet
  427. rather than underneath it.
  428.  
  429. Fixed (setf third) function definition in cl.lisp (common lisp
  430. standard library).
  431.  
  432. Removed MacWrite version of the documentation. I do not
  433. have MacWrite to test it, and it reportedly has a problem.
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.